package com.zrh.jsd.service.studydemo.java_base.final_test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.util.JSONPObject;

import java.util.HashMap;
import java.util.Map;

/*
* 一、修饰一个引用
* 1、如果引用为基本数据类型，则该引用为常量，该值无法修改。编译时报错
* 2、如果引用为引用数据类型，比如对象、数组，则该独享、数组本身可以修改，但指向该对象或数组的地址的引用不能修改。
* ps:haseCode()方法跟System.identityHashCode() 能代表对象的内存地址吗？ 不能！！！
* 3、如果引用为类的成员变量，则必须当场赋值，否则编译会报错。
* 二、修饰一个方法
* 1、当使用final修饰方法时，这个方法将成为最终方法，无法被子类重写。但该方法仍然可以被集成
* 三、修饰一个类
* 1、当使用final修改类时，该类成为最终类，无法被集成。简称为“断子绝孙类”
* */
public class FinalTest {
    public static void main(String[] args) {
        final Map<String,String> map = new HashMap<String,String>();
        System.out.println(map.hashCode());
        System.out.println(System.identityHashCode(map));
        map.put("12","12");
        System.out.println(map.hashCode());
        System.out.println(System.identityHashCode(map));

        System.out.println(JSON.toJSONString(map));
        System.out.println(JSONObject.toJSONString(map));
    }

    public void a (){
        Map<String,String> map = new HashMap<String,String>();
        map.put("12","12");
        map.put("13","12");
        map.put("14","12");
    }
}
